package com.example.server.web.controller;


import com.example.server.web.domain.Questionnaire;
import com.example.server.web.domain.RespBean;
import com.example.server.web.domain.page.PageQueryDto;
import com.example.server.web.domain.dto.QuestionnaireParamDto;
import com.example.server.web.service.QuestionnaireService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  问卷前端控制器
 * </p>
 *
 * @author 作者
 * @since 2023-04-04
 */
@RestController
@RequestMapping("/questionnaire")
@Api(tags = {"问卷接口"})
public class QuestionnaireController {
    @Autowired
    private QuestionnaireService questionnaireService;

    @ApiOperation("添加问卷")
    @PostMapping("/add")
    public RespBean add(@Validated @RequestBody Questionnaire questionnaire){
        questionnaireService.add(questionnaire);
        return RespBean.success("保存成功");
    }

    @ApiOperation("删除问卷（可批量）")
    @PostMapping("/deletes")
    public RespBean deletes(@RequestBody List<Long> ids){
        questionnaireService.deletes(ids);
        return RespBean.success("删除成功");
    }

    @ApiOperation("查看所有分页问卷（提供给教务员）")
    @GetMapping("/query")
    public RespBean query(QuestionnaireParamDto dto, PageQueryDto pageQueryDto){
        Map map = questionnaireService.queryPage(dto, pageQueryDto);
        return RespBean.success("查询成功",map);
    }

    @ApiOperation("学生查看本人的问卷（分页数据，提供给学生）")
    @GetMapping("/queryByStuId")
    public RespBean queryByStuId(PageQueryDto pageQueryDto){
        Map map = questionnaireService.queryByStu(pageQueryDto);
        return RespBean.success("查询成功",map);
    }

    @ApiOperation("一键回收问卷数据（关联课程id）")
    @GetMapping("/recovery/{id}")
    public RespBean recovery(@PathVariable("id") String id){
        questionnaireService.recovery(id);
        return RespBean.success("回收成功");
    }
}
